home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.036 < prev    next >
Encoding:
Text File  |  1996-02-12  |  27.7 KB  |  763 lines

  1. Frequently Asked Questions (FAQS);faqs.036
  2.  
  3.  
  4.  
  5.   This is only a half-facetious question; there's only room on most
  6.   workstation screens (usually 1024x768 or 1280x1024 pixels in area) for
  7.   a couple of windows with decent-sized fonts.  To help alleviate the
  8.   discomfort of cramped space, try the 'tvtwm' window manager.  (I sound
  9.   like a cough-drop commercial.)
  10.  
  11.   Tvtwm, a superset of the twm window manager, allows windows to be
  12.   placed on a virtual root window that can be of any size (for example,
  13.   3000 by 3000 pixels).  This virtual root can be navigated via tvtwm's
  14.   'panner', a reduced-size overview of your entire environment.
  15.  
  16.   Tvtwm can be found on your local comp.sources.x archive or in the
  17.   X11R4 and X11R5 distributions.  Try anonymous FTP to ftp.uu.net
  18.   (137.39.1.9) in /usenet/comp.sources.x.
  19.  
  20.   For those people that actually like the OpenLook window manager :-),
  21.   a similarly modified version of Olwm can be found in ftp.uu.net
  22.   /usenet/comp.sources.x/volume14/olvwm (and a lot of other places,
  23.   too).
  24.  
  25.   People running on HP workstations can use the rooms metaphor built
  26.   into the vuewm.  A similar, but less powerful alternative is the vr
  27.   program in the contrib directory at export.lcs.mit.edu.  It,
  28.   however, doesn't support spreading epoch windows around different
  29.   rooms.
  30.  
  31. *                      === COLORS AND FONTS ===
  32.  
  33. D-1: How do I interactively select my foreground color?
  34.  
  35.   First, define a style for each of your desired foreground colors in
  36.   your .emacs file, like so:
  37.  
  38.     (setq red-style (make-style))
  39.     (set-style-foreground red-style "red")
  40.  
  41.   Then, define a short command 'goto-style' like so:
  42.  
  43.     (defun goto-style (newstyle)
  44.       "Set current buffer to a given font NEWSTYLE."
  45.       (setq buffer-style newstyle)
  46.       (redraw-display))
  47.  
  48.   Next, bind commands to keys like so:
  49.  
  50.     (global-set-key "\C-c1" (definteractive (goto-style red-style)))
  51.  
  52.   This binds a command that changes the current foreground color to red
  53.   to the key sequence C-c 1.
  54.  
  55.   The following function allows you to interactive specify a new color
  56.   for the current buffer's foreground:
  57.  
  58.     (defun set-foreground (newfg)
  59.       "Set current foreground color to NEWFG."
  60.       (interactive "sForeground color: ")
  61.       (set-style-foreground buffer-style newfg)
  62.       (redraw-display))
  63.  
  64.   This function is activated by typing:
  65.  
  66.     M-x set-foreground
  67.  
  68.   Or, it can be bound to a key like so:
  69.  
  70.     (global-set-key "\C-z\C-s" 'set-foreground)
  71.  
  72. D-2: How do I switch fonts interactively?
  73.  
  74.   To change fonts, you don't have to define new styles.  Just define a
  75.   short command 'goto-font', like so:
  76.  
  77.     (defun goto-font (newfont)
  78.       "Set current buffer to a given font NEWFONT."
  79.       (font newfont)
  80.       (redraw-display))
  81.  
  82.   Then, bind commands to keys like so:
  83.  
  84.     (global-set-key "\C-c1" (definteractive (goto-font "8x13")))
  85.  
  86.   This changes the current edit window's font to "8x13" when the key
  87.   sequence 'C-c 1' is entered.
  88.  
  89.   The following function allows you to interactively input a font name:
  90.  
  91.     (defun set-font (newfont)
  92.       "Set current font to NEWFONT."
  93.       (interactive "sFont name: ")
  94.       (font newfont)
  95.       (redraw-display))
  96.  
  97.   This function is activated by typing:
  98.  
  99.     M-x set-font
  100.  
  101.   Or, it can be bound to a key like so:
  102.  
  103.     (global-set-key "\C-z\C-s" 'set-font)
  104.  
  105.   If the font you specify with either of these methods isn't valid for
  106.   your X server (i.e. if the font doesn't exist in a directory listed in
  107.   your X server's font path and in that directory's fonts.dir file, or
  108.   isn't available from the font server if you're running X11R5), you
  109.   will get this message in your minibuffer:
  110.  
  111.   Bad font name
  112.  
  113.   Font names are ordinary X font names; for example, a 14-point non-bold
  114.   non-italic Helvetica font can be referred to as:
  115.  
  116.   "*helvetica-medium-r-normal--14*"
  117.  
  118.   The standard X client 'xlsfonts' will give you a list of the fonts
  119.   registered with your X server.  The standard X client 'xfontsel' lets
  120.   you interactively put together an X font specification string based on
  121.   individual attributes (e.g., family, size).
  122.  
  123. D-3: How can I associate a certain foreground color with a file
  124.  so that every time I load that file my foreground color is
  125.  automatically set?
  126.  
  127.   You can easily do this by using GNU Emacs' ability to handle file
  128.   variables.  For example, if you have defined style 'red-style' to
  129.   specify a red foreground color, and want file 'foobar.c' to always
  130.   have the foreground color red, add this to the bottom of 'foobar.c':
  131.  
  132.     ^L
  133.     /*
  134.     Local Variables:
  135.     buffer-style: red-style
  136.     End:
  137.     */
  138.  
  139.   NOTE: '^L' is a newline character; you can enter one in an edit
  140.   buffer by typing 'C-q C-l'.
  141.  
  142.   Then, whenever 'foobar.c' is loaded, the variable 'buffer-style' will
  143.   be set to 'red-style', and as a result the foreground color for that
  144.   buffer will be red.
  145.  
  146. D-4: How do I design my own really funky technicolor modeline?
  147.  
  148.   Using the tried-and-true Learning By Example(tm) educational method,
  149.   I'll just give the (heavily commented) elisp code I use to define my
  150.   own customized modeline:
  151.  
  152.   ;; A style to emphasize things I find important
  153.   (defvar mode:*hilight-style*  (make-style)
  154.     "Style for modeline hilights"
  155.   )
  156.   (let ((s1 mode:*hilight-style*))
  157.    ;; Do something reasonable if we're on a monochrome screen
  158.     (if (> (epoch::number-of-colors) 2)
  159.         (progn
  160.       (set-style-foreground s1 "#83558c")
  161.       (set-style-background s1 (foreground)))
  162.       (progn
  163.       (set-style-foreground s1 (background))
  164.       (set-style-background s1 (foreground))))
  165.     (set-style-font s1 "*helvetica-bold-r-*-*-12-*")
  166.   )
  167.  
  168.   ;; A style for normal modeline contents -- inverted from normal
  169.   ;;  buffer
  170.   (defvar mode:*normal-style* (make-style)
  171.     "Normal modeline style"
  172.   )
  173.   (let ((s2 mode:*normal-style*))
  174.     (set-style-foreground s2 (background))
  175.     (set-style-background s2 (foreground))
  176.     (set-style-font s2 "*helvetica-medium-r-*-*-12*")
  177.   )
  178.  
  179.   ;; define  a simpler-looking modeline format
  180.   (setq default-mode-line-format
  181.     (list
  182.       ""
  183.       'mode:*normal-style*
  184.       'mode-line-modified
  185.       ;; Highlight the buffer name
  186.       'mode:*hilight-style*
  187.       " %17b"
  188.       'mode:*normal-style*
  189.       "   "
  190.       'global-mode-string
  191.       "   %[("
  192.       'mode-name 'minor-mode-alist "%n" 'mode-line-process
  193.       ")%]--"
  194.       ;; Highlight where we are in the buffer
  195.       'mode:*hilight-style*
  196.       (cons -3 "%p")
  197.       'mode:*normal-style*
  198.       "-%-"
  199.       )
  200.     )
  201.  
  202.  
  203. D-5: How do I replace the mouse region selection underlining with a
  204.  different style?
  205.  
  206.   The appearance of the region underlined with the mouse is described
  207.   by the style in the variable "motion::style".  You can use the
  208.   normal style functions to manipulate this variable.  For example,
  209.   you can turn off underlining with the following:
  210.  
  211.     (set-style-underline motion::style nil)
  212.  
  213.   Now, nothing will show up.  To have just the text foreground color
  214.   change on mouse selection, do:
  215.  
  216.     (set-style-foreground motion::style "yellow")
  217.     (set-style-background motion::style (background))
  218.  
  219.   Replace "yellow" with any desired X color name.
  220.  
  221.   To have the selected region appear as reverse video, try:
  222.  
  223.     (set-style-foreground motion::style (background))
  224.     (set-style-background motion::style (foreground))
  225.  
  226.   To have the selected region appear with an overlayed diagonal stipple
  227.   pattern, try:
  228.  
  229.     (set-style-background motion::style "red")
  230.     (set-style-background-stipple motion::style
  231.       (make-bitmap 4 4 "\167\273\335\356"))
  232.  
  233.   The style bound to motion::style has default settings as follows:
  234.  
  235.     (set-style-foreground motion::style (foreground))
  236.     (set-style-background motion::style (background))
  237.     (set-style-underline motion::style (foreground))
  238.  
  239. *                           === MENUS ===
  240.  
  241. E-1: Does Epoch support popup menus or menubars?
  242.  
  243.   The base Epoch distribution does not have native support for popup
  244.   menus or menubars.  However, there are other ways to use menus with
  245.   Epoch.
  246.  
  247.   METHOD #1:
  248.  
  249.   If you're running the window manager GWM (available via anonymous
  250.   FTP to export.lcs.mit.edu (18.24.0.12) in /contrib/gwm), you can use
  251.   the Epoch contrib 'wm-menu' package (found in the contrib tar file
  252.   on cs.uiuc.edu) to have GWM provide menus that pass messages to
  253.   Epoch.
  254.  
  255.   METHOD #2:
  256.  
  257.   If you're running a window manager that has user-specifiable menus
  258.   (as all of the common window managers do), you can perform
  259.   particular commands from a menu.  These commands can communicate
  260.   with epoch, and get it to do things.
  261.  
  262.   One way to do this is to use "xse" (XSendEvent) and send characters
  263.   that happen to be bound to the commands you want to activate.  To
  264.   bind arbitrary commands to menu entries in this manner, you need to
  265.   define a unique keystroke pattern (with global-set-key) for each
  266.   command and then send that keystroke pattern with xsendevent via the
  267.   menu.  See the section on rebind-key (below) for more information on
  268.   this technique.  (Of course, you are also free to have xsendevent
  269.   send a key sequence like 'ESC x u n d o RET' directly to Epoch.)
  270.  
  271.   A better way is to use gnudoit, which communicates to gnuserv.
  272.   Gnuserv, gnuclient, and gnudoit are replacements for emacsclient and
  273.   its server.  With gnudoit, you can pass in an Emacs Lisp form to
  274.   evaluate, rather than the less readable X Event description for a
  275.   key binding.
  276.  
  277.   Some window managers (such as TWM) do not allow the user to specify
  278.   client-specific menus -- you can only add menus to all clients.
  279.   This is not an ideal solution, since all windows (Epoch or not) in
  280.   the session will have the menu attached to them, but it does work
  281.   and is quite convenient for use with Epoch.  Other window managers
  282.   (Mwm in particular) allow you to specify a menu on a
  283.   client-by-client basis.  Thus, you can have different menus on
  284.   terminal windows from on Epoch (Mwm will even let you have different
  285.   menus on different screens and on the minibuffer).
  286.  
  287.   Here's a couple of sample Twm menu descriptions.  Note that these
  288.   would show up on all applications that have title bars.
  289.  
  290.   menu "epoch"
  291.   {
  292.     "Epoch Menu"   f.title
  293.     "Undo"         ! "xse 'Ctrl<Key>x' '<Key>u'"
  294.     "Quit"         ! "xse 'Ctrl<Key>x' 'Ctrl<Key>c'"
  295.   }
  296.   LeftTitleButton "~/epochbitmap.bm" = f.menu "epoch"
  297.  
  298.   Or, using gnudoit (notice the more readable function names):
  299.  
  300.   menu "epoch"
  301.   {
  302.     "Epoch Menu"   f.title
  303.     "Undo"         ! "gnudoit '(undo)'"
  304.     "Quit"         ! "gnudoit '(save-buffers-kill-emacs)'"
  305.   }
  306.   LeftTitleButton "~/epochbitmap.bm" = f.menu "epoch"
  307.  
  308.  
  309.   Here's an equivalent Mwm menu, along with resources that will place
  310.   the menu only on Epoch windows.
  311.  
  312.   This goes in your Mwm config file:
  313.   Menu EpochMenu
  314.   {
  315.       "Epoch" f.title
  316.       "Undo"  ! "gnudoit '(undo)'"
  317.       "Quit"  ! "gnudoit '(save-buffers-kill-emacs)'"
  318.   }
  319.  
  320.   This goes in your X defaults:
  321.   Mwm*epoch*windowMenu: EpochMenu
  322.  
  323.   Note the "*epoch*" -- this is the class name of the screen.  If you
  324.   use the -name or -rn options (as described in A-6), this name will
  325.   change.  See the "class" attribute of screens in the epoch manual
  326.   for more on this.
  327.  
  328.   You can get xsendevent at export.lcs.mit.edu (18.24.0.12) in /contrib
  329.   or at ftp.uu.net (137.39.1.9) in /packages/X/contrib.  Gnuserv,
  330.   gnuclient and gnudoit are available at ee.utah.edu, in
  331.   /emacs/etc/gnuserv (and probably other sites, too, but I can't find
  332.   any with Xarchie -- anyone got a good one?).
  333.  
  334.   [From Philippe Bondono (bondono@vnet.ibm.com)., with Mwm and
  335.   gnuclient additions by Brook]
  336.  
  337.   METHOD #3:
  338.  
  339.   A completely different technique involves using a separate X client
  340.   that posts a menu and has Epoch (or for that matter, GNU Emacs)
  341.   receive commands from it.  One example of this technique is
  342.   /gnu/emacs/buttons.tar.Z from anonymous FTP to aix370.rrz.uni-koeln.de
  343.   (134.95.132.2).
  344.  
  345.   METHOD #4:
  346.  
  347.   Another method uses xmenu or xmenu2, which are available at any
  348.   comp.sources.x archive.  (If you don't know of such an archive, try
  349.   anonymous FTP to ftp.uu.net (137.39.1.9) in /usenet/comp.sources.x.)
  350.   After you have compiled xmenu or xmenu2, define the following function
  351.   in your .emacs file:
  352.  
  353.   (defun interpret-output (process output)
  354.     (command-execute (car (read-from-string output))))
  355.  
  356.   Then you can define other functions that make specific menus, with
  357.   menu entries bound to commands, like the following example shows:
  358.  
  359.   (defun make-menu ()
  360.     (interactive)
  361.     (set-process-filter (start-process "xmenu" nil
  362.         "/usr/local/bin/xmenu" "-heading" "Epoch Menu"
  363.         "Undo=undo")
  364.       'interpret-output))
  365.  
  366.   This example uses /usr/local/bin/xmenu to post a one-entry menu to the
  367.   screen; the menu entry's label is "Undo" and the action it triggers in
  368.   Epoch is 'undo'.  Specify as many "Label=action" pairs as you like as
  369.   part of the start-process command.
  370.  
  371.   [From Philippe Bondono (bondono@vnet.ibm.com).]
  372.  
  373.   If you use XView/Open Windows, Dev Joneja (dj7@cunixf.cc.columbia.edu)
  374.   has written a menu/button client similar to xmenu; it's available via
  375.   anonymous FTP from ftp.ncsa.uiuc.edu (141.142.20.50) as
  376.   /outgoing/marca/epoch/xvmenu.tar.Z.
  377.  
  378.   Bob Weiner (rsw@cs.brown.edu) says the following concerning menus
  379.   within Hyperbole:
  380.  
  381.   ----------------------------------------------------------------------
  382.   If you use Hyperbole, you know what the Smart Key system is, context
  383.   sensitive key bindings for many Emacs modes and subsystems.  There is
  384.   a Smart Menu system that goes along with this but has not been
  385.   released because it needs some additional menus and some integration
  386.   work.  It is window manager and window system independent, works under
  387.   Emacs, with a slightly customized version that can highlight selected
  388.   menu items and display menus in a separate Epoch screen, and is
  389.   written entirely in Elisp, so no patching is needed.  It provides much
  390.   easier subsystem access for novices and experienced users and has been
  391.   in use at a few sites for the last several years.
  392.  
  393.   I'd like to get it in a form for release but won't have the time for
  394.   several months.  If an experienced Elisp programmer wanted to
  395.   integrate it with Hyperbole and make any other changes, I [Bob, not
  396.   Marc] would be willing to send it out and coordinate on and test the
  397.   final changes.
  398.   ----------------------------------------------------------------------
  399.  
  400.   See the list of FTP sites below for more information on Hyperbole.
  401.  
  402. *                          === KEYBOARD ===
  403.  
  404. F-1: How do I make the backspace key work properly?
  405.  
  406.   This is actually a GNU Emacs question, but it's included in this FAQ
  407.   because it's probably more important to more people than all the
  408.   other questions here.  (One of the great mysteries of GNU Emacs is
  409.   why the backspace key _still_ doesn't do its job.)
  410.  
  411.   Here are four ways to fix this:
  412.  
  413.   METHOD #1:
  414.  
  415.   Put this in your .emacs file:
  416.  
  417.     (rebind-key "BackSpace" nil "\C-?")
  418.  
  419.   This is the cleanest Epoch-specific solution.  It rebinds
  420.   the X representation for the backspace key directly to that
  421.   of the delete key.
  422.  
  423.   [Thanks to Joe Wells (jbw@bigbird.bu.edu).]
  424.  
  425.   METHOD #2:
  426.  
  427.   Put this in your .emacs file:
  428.  
  429.     (global-set-key "\C-^bdc" 'backward-delete-char-untabify)
  430.     (rebind-key "BackSpace" nil "\C-^bdc")
  431.  
  432.   This rebinds the X representation for the backspace key to the
  433.   appropriate command for deleting a character backward.  Like the
  434.   first method, this is Epoch-specific.
  435.  
  436.   If you don't like to have your backspace key also untabify (i.e.,
  437.   convert tags to spaces on the fly), use this instead of the previous
  438.   global-set-key:
  439.  
  440.     (global-set-key "\C-^bdc" 'backward-delete-char)
  441.  
  442.   METHOD #3:
  443.  
  444.   Put this in your .emacs file:
  445.  
  446.     (global-set-key "\C-h" 'backward-delete-char-untabify)
  447.     (global-set-key "\C-xh" 'help-command) ; override mark-whole-buffer
  448.  
  449.   This makes C-h (the backspace key as well as the Control-h key
  450.   sequence) delete characters backward, and shifts responsibility for
  451.   help to C-x h.  This fix will work for GNU Emacs as well as Epoch.
  452.  
  453.   If you don't like to have your backspace key also untabify (i.e.,
  454.   convert tabs to spaces on the fly), use this instead of the previous
  455.   global-set-key for C-h:
  456.  
  457.     (global-set-key "\C-h" 'backward-delete-char)
  458.  
  459.   METHOD #4:
  460.  
  461.   Outside of Epoch, you can change the X representation of the
  462.   BackSpace key into a Delete by doing this:
  463.  
  464.     xmodmap -e "keysym BackSpace = Delete"
  465.  
  466.   This approach has the disadvantage of not being done inside
  467.   of Epoch for those who prefer customizing lisp code to
  468.   customizing their system environments.
  469.  
  470.   [Thanks to Joe Wells (jbw@bigbird.bu.edu).]
  471.  
  472. F-2: How do I make the keys marked "Page Up" and "Page Down" on an IBM
  473.  Selectric-style keyboard do their jobs?
  474.  
  475.   Using the key rebinding facility discussed below, you can put the
  476.   following two lines in your .emacs file:
  477.  
  478.     (rebind-key "Prior" nil "\M-v") ; Note Prior, not Page Up.
  479.     (rebind-key "Next" nil "\C-v")  ; Note Next, not Page Down.
  480.  
  481.   Similarly, if you want "Home" and "End" to go to the beginning and end
  482.   of the current buffer respectively, do:
  483.  
  484.     (rebind-key "Home" nil "\M-<")
  485.     (rebind-key "End" nil "\M->")
  486.  
  487. F-3: How do I bind keys in the numeric keypad on an IBM Selectric-style
  488.  keyboard to their obvious functions (arrow movement, home, end, etc.)?
  489.  
  490.   Put these lines in your .emacs file:
  491.  
  492.     (rebind-key "KP_Home" nil "\M-<")
  493.     (rebind-key "KP_Up" nil "\C-p")
  494.     (rebind-key "KP_Prior" nil "\M-v")
  495.     (rebind-key "KP_Left" nil "\C-b")
  496.     (rebind-key "KP_Begin" nil "\C-l")
  497.     (rebind-key "KP_Right" nil "\C-f")
  498.     (rebind-key "KP_End" nil "\M->")
  499.     (rebind-key "KP_Down" nil "\C-n")
  500.     (rebind-key "KP_Next" nil "\C-v")
  501.  
  502.   NOTE: This makes the keypad arrow keys work, the keypad PgUp/PgDown
  503.   work, and the keypad Home/End go to the beginning/end of the
  504.   buffer.
  505.  
  506.   Other keys appropriate for rebinding in a Selectric-style numeric
  507.   keypad include KP_Divide, KP_Multiply, KP_Subtract, KP_Add, KP_Enter,
  508.   KP_Insert, and KP_Delete; see below for more details.
  509.  
  510. F-4: What general facilities does Epoch provide for rebinding function
  511.  keys, and how do I use them?
  512.  
  513.   The rebind-key function allows you to rebind any keycode to a new
  514.   string.  An example is probably best to show how this works.  To make
  515.   the key marked "Page Up" (on IBM Selectric-style keyboards) actually
  516.   move the current buffer up a page (like M-v), do:
  517.  
  518.     (rebind-key "Prior" nil "\M-v")
  519.  
  520.   Note that "Prior" is the actual X keysym name for the "Page Up" key;
  521.   to see the X keysym names, refer to /usr/include/X11/keysymdef.h (or
  522.   $OPENWINHOME/include/X11/keysymdef.h on OpenWindows systems).
  523.   (Disregard the leading XK_ in keysymdef.h's definitions for Epoch's
  524.   purposes; thus, X11's "XK_Prior" becomes Epoch's "Prior".  To find out
  525.   which keys are actually active for your keyboard and server, use the
  526.   command "xmodmap -pk".)
  527.  
  528.   The standard function keys are named F1 through F12, the function keys
  529.   on the left side of a Sun-style keyboard are named L1 through L10, and
  530.   so on.  The keypad apparently cannot be addressed by KP_0 through KP_9
  531.   but must be referenced by names like KP_Left, KP_Up, and so on.
  532.  
  533.   A simple two-step approach for binding function keys to commands
  534.   involves binding a key to an arbitrary GNU Emacs key encoding (in the
  535.   following example, C-^ k 1) and then binding that encoding to the
  536.   command.  An example that binds the function key marked "End" to an
  537.   arbitrary command (in this case, end-of-line) follows:
  538.  
  539.     (rebind-key "End" 0 "\C-^k1")
  540.     (global-set-key "\C-^k1" 'end-of-line)
  541.  
  542.   Note that the above is only an example of the two-step method; if you
  543.   really want "End" to do 'end-of-line, do the obvious instead:
  544.  
  545.     (rebind-key "End" 0 "\C-e")
  546.  
  547.   The rebind-key command allows modifiers (e.g. shift, control) to be
  548.   specified; the following example binds Control-"End" to an arbitrary
  549.   command (in this case, end-of-buffer):
  550.  
  551.     (rebind-key "End" 'control "\C-^Ck1")
  552.     (global-set-key "\C-^Ck1" 'end-of-buffer)
  553.  
  554.   For an example of these principles in action, see the file
  555.   'amc/keys.el' in the 3.2 contrib directory (which is still up for
  556.   anonymous ftp at cs.uiuc.edu as a separate .tar.Z file) or at
  557.   ftp.ncsa.uiuc.edu in /outgoing/marca/epoch.
  558.  
  559.   [Thanks to Alan Carroll (carroll@cs.uiuc.edu).]
  560.  
  561. F-5: I want Epoch to disregard accidental presses of function keys that
  562.  insert spurious characters (e.g., "-1~") into the buffer.  Does Epoch
  563.  perchance have some magical way to make this happen?
  564.  
  565.   Perchance, Epoch does.  The variable epoch::function-key-mapping, if
  566.   set to nil, makes Epoch disregard such keys, unless they're explicitly
  567.   rebound with rebind-key.  You can set this in your .emacs file like
  568.   so:
  569.  
  570.     (setq epoch::function-key-mapping nil)
  571.  
  572.   [Thanks to Alan Carroll (carroll@cs.uiuc.edu).]
  573.  
  574. F-6: How do I turn the keyboard bell off?
  575.  
  576.   The easy answer is to put the following line in your .emacs file:
  577.  
  578.     (setq epoch::bell-volume -50)
  579.  
  580.   Another possibility, if you like visual bells (i.e., having the
  581.   entire edit window flash reverse video instead of hearing an audible
  582.   beep), is to put the following in your .emacs file:
  583.  
  584.     (epoch::set-bell t)
  585.  
  586.   The malicious answer, for those who, like myself, never want to hear
  587.   another beep for the rest of time, is to modify src/x11term.c in the
  588.   Epoch distribution; just change the line that reads:
  589.  
  590.     XBell (xs->display,volume);
  591.  
  592.   To:
  593.  
  594.     /* XBell (xs->display,volume); */
  595.  
  596.   Then recompile.
  597.  
  598. *                        === HIGHLIGHTING ===
  599.  
  600. G-1: How do I highlight regions of text in a buffer with different styles?
  601.  
  602.   While the current Epoch distribution contain plenty of support for
  603.   zones and styles, the enabling mechanisms that make syntax-directed
  604.   highlighting possible, no intrinsic support for such highlighting is
  605.   provided.  This situation may change in subsequent releases of Epoch.
  606.  
  607.   Three packages that provide varying degrees of support for
  608.   syntax-directed highlighting are:
  609.  
  610.   tek-highlight-2.0.tar.Z (available from archive.cis.ohio-state.edu
  611.   or ftp.ncsa.uiuc.edu, see below), which supports comment highlighting
  612.   in source code as well as support for the Info documentation browser,
  613.   various mail and news packages, and manual pages.
  614.  
  615.   lightbrite.tar.Z (available from ftp.ncsa.uiuc.edu, see below),
  616.   written by Marc Andreessen to allow per-mode regexp-based
  617.   highlighting.  Thus, you can have all #define's/#endif's in red,
  618.   setq's and defun's in green, int/float/double's in yellow, '-->'s in
  619.   purple, and so on.  Here's something from its README:
  620.    o Accurate comment highlighting.
  621.    o Regexp touchup highlighting.
  622.    o Easy specification of visual attributes of multiple
  623.       highlighting styles.
  624.    o Instant highlighting (as you type) with adjustable
  625.       responsiveness.
  626.    o Buffer size thresholds for both comment and touchup
  627.       highlighting.
  628.    o Use of minor mode and local keymaps.
  629.    o Re-highlight visible screen, current paragraph, current
  630.       function, immediate area, or entire buffer.
  631.    o Large assortment of default mode-specific highlighting
  632.       patterns.
  633.    o Automatic highlight on find-file and/or write-file.
  634.    o Special handling of mail and rmail modes.
  635.    o Works with both Epoch and Lucid Emacs transparently.
  636.  
  637.   hilit.el.Z (most recent version was posted to gnu.emacs.souces and is
  638.   available from ftp.ncsa.uiuc.edu, see below), which provides
  639.   source-code comment and regexp highlighting.
  640.  
  641. *               === EPOCH-SPECIFIC ELISP PACKAGES ===
  642.  
  643. H-1: Where can I find Epoch-specific elisp packages?
  644.  
  645.   Try the following anonymous FTP sites for Epoch-specific elisp
  646.   packages:
  647.  
  648.   aix370.rrz.uni-koeln.de (134.95.132.2)
  649.     /gnu/emacs
  650.  
  651.   archive.cis.ohio-state.edu (128.146.8.52)
  652.     /pub/gnu/emacs/elisp-archive/elisp
  653.     [This is main elisp-archive site; it is mirrored at
  654.      ftp.uu.net (137.39.1.9) in /languages/emacs-lisp, among other places.
  655.      Not much Epoch code exists here; in particular, a much more
  656.      recent version of hilit.el.Z is at ftp.ncsa.uiuc.edu, below.]
  657.  
  658.   ftp.cs.buffalo.edu (128.205.32.3)
  659.     /pub
  660.     [This is the distribution site for the new Dired, which will
  661.      be included in Emacs v19; it includes support for Epoch.]
  662.  
  663.   ftp.ncsa.uiuc.edu (141.142.20.50)
  664.     /outgoing/marca/epoch
  665.     [This is the previous FAQ maintainer's archive of Epoch code; the
  666.      README file gives an overview of what he considers to be
  667.      'essential' Epoch packages, and all of those packages
  668.      are available there.  If he gets out of date on any of
  669.      these and you notice it, please let him know.]
  670.  
  671.   icsi-ftp.berkeley.edu (128.32.201.55)
  672.     /pub/elisp
  673.  
  674.   ireq-robot.hydro.qc.ca (131.195.2.130)
  675.     /pub/emacs/lisp
  676.     [This is the distribution site for the IMOUSE package.]
  677.  
  678.   wilma.cs.brown.edu (128.148.31.66)
  679.     /pub/hyperbole
  680.     [This is the distribution site for the Hyperbole hypertext
  681.      system, which includes support for Epoch.  Also available
  682.      separately from here is the wrolo 'rolodex' package, one of the
  683.      components of Hyperbole.]
  684.  
  685.   Also see the contrib tar file found at cs.uiuc.edu, in the same
  686.   directory as the actual Epoch distribution.
  687.  
  688.   Also watch the gnu.emacs.sources Usenet newsgroup, as well as the
  689.   epoch newsgroup/mailing list (see below).
  690.  
  691.   Please volunteer the names of any sites not on this list.
  692.  
  693. H-2: Where can I get a PostScript version of the Epoch manual?
  694.  
  695.   Use anonymous ftp to cs.uiuc.edu (128.174.252.1) in
  696.   /pub/epoch-files/epoch; get epoch-4.0.epoch-man.ps.Z.
  697.  
  698. *                      === OTHER RESOURCES ===
  699.  
  700. I-1: What Epoch newsgroups/mailing lists are out there?
  701.  
  702.   The Usenet newsgroup gnu.epoch.misc and the mailing list
  703.   epoch@cs.uiuc.edu are one and the same.  To join the mailing list,
  704.   send a request to epoch-request@cs.uiuc.edu.  (It is best to read the
  705.   newsgroup if you have access to it, to save on network resources and
  706.   the mailing list maintainer's time.)
  707.  
  708.   For more general information about Epoch and GNU Emacs, see the list
  709.   of resources at the start of this file.
  710.  
  711. I-2: Where do I send bug reports?
  712.  
  713.   Either post to the newsgroup gnu.epoch.misc, or (equivalently) send
  714.   mail to epoch@cs.uiuc.edu (which is the newsgroup).
  715.  
  716. *                     === ADVANCED QUESTIONS ===
  717.  
  718.   [NOTE: This section is at the bottom since the questions involve
  719.   actual source-code hacking or problems with specific machine
  720.   configurations that the FAQ moderator cannot personally verify and
  721.   whose solutions will probably involve some sort of hacking.  If
  722.   these answers helped you, please let me know.  If I don't hear of
  723.   people finding these useful, I'm going to remove them.]
  724.  
  725. Z-1: Epoch 4.0b1 (or later) (as well as GNU Emacs 18.58) built under
  726.  HP-UX 8.0 and 8.05 apparently don't recognize the Meta key as Alt.
  727.  How can this be fixed?
  728.  
  729.   Bob Fisher (bob@fisher.depaul.edu) suggests the following command,
  730.   executed once per session, prior to starting Epoch:
  731.  
  732.           xmodmap -e "clear mod1"        \
  733.                   -e "add mod1 = Meta_R" \
  734.                   -e "add mod1 = Meta_L"
  735.  
  736. Z-2: Why do all of Epoch's colors go away when Epoch is run on an X11R5
  737.  server with multiple screens?
  738.  
  739.   Dana Chee (dana@thumper.bellcore.com) reports that X11R5 has a new
  740.   SCREEN_RESOURCES property that allows/forces colors to only appear for
  741.   color screens, but Epoch doesn't look at this property.  This bug
  742.   will only bite you if you're running on a multi-screen system.  If it
  743.   happens, there is a workaround; see the xrdb manpage and the xrdb
  744.   option '-all'.
  745.  
  746. Z-3: Even though Epoch 4.0b1 includes fixes to keep the cursor from
  747.  disappearing (as it does on occasion, especially in a shell, in
  748.  Epoch 4.0b0), the cursor still disappears sometimes.  Is there a fix
  749.  for this?
  750.  
  751.   First, Epoch 4.0p0 has additional fixes for this problem which
  752.   presumably will supersede the fix given below.
  753.  
  754.   According to Michael Thome (mthome@bbn.com), activating the XFlush
  755.   code at the end of the CursorToggle routine in 4.0b1's x11term.c seems
  756.   to fix the problem.  (In other words, '#if 0' on line 737 of x11term.c
  757.   should be changed to '#if 1'.)
  758.  
  759. Z-4: I want Epoch to iconify itself immediately upon starting.  To this
  760.  end, in my .emacs file I have (epoch::iconify-screen).  But most
  761.  (~95%) of the time this doesn't work.  How can I make it work all the
  762.  time?
  763.